Supervising Offline Partial Evaluation of Logic Programs Using Online Techniques
نویسندگان
چکیده
A major impediment for more widespread use of offline partial evaluation is the difficulty of obtaining and maintaining annotations for larger, realistic programs. Existing automatic binding-time analyses still only have limited applicability and annotations often have to be created or improved and maintained by hand, leading to errors. We present a technique to help overcome this problem by using online control techniques which supervise the specialisation process in order to detect such errors. We discuss an implementation in the logen system and show on a series of examples that this approach is effective: very few false alarms were raised while infinite loops were detected quickly. We also present the integration of this technique into a web interface, which highlights problematic annotations directly in the source code. A method to automatically fix incorrect annotations is presented, allowing the approach to be also used as a pragmatic binding time analysis. Finally we show how our method can be used for efficiently locating errors with built-ins inside Prolog source code.
منابع مشابه
A Hybrid Approach to Conjunctive Partial Evaluation of Logic Programs
Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source program and produce an annotated version so that the partial evaluation phase should only follow these annotation...
متن کاملA Hybrid Approach to Conjunctive Partial Deduction
Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source program and produce an annotated version so that the partial evaluation phase should only follow these annotation...
متن کاملOffline specialisation in Prolog using a hand-written compiler generator
The so called “cogen approach” to program specialisation, writing a compiler generator instead of a specialiser, has been used with considerable success in partial evaluation of both functional and imperative languages. This paper demonstrates that the cogen approach is also applicable to the specialisation of logic programs (called partial deduction) and leads to effective specialisers. Moreov...
متن کاملPoly-Controlled Partial Evaluation and its Application to Resource-Aware Program Specialization PhD Thesis
Partial Evaluation is an automatic technique for program optimization. The aim of partial evaluation is to specialize a program with respect to part of its input, which is known as the static data. Existing algorithms for on-line partial evaluation of logic programs, given an initial program and a description of runtime queries, deterministically produce a specialized program. The quality of th...
متن کاملImproving Offline Narrowing-Driven Partial Evaluation Using Size-Change Graphs
An offline approach to narrowing-driven partial evaluation (a partial evaluation scheme for first-order functional and functional logic programs) has recently been introduced. In this approach, program annotations (i.e., the expressions that should be generalized at partial evaluation time to ensure termination) are based on a simple syntactic characterization of quasi-terminating programs. Thi...
متن کامل